package com.h3c.ptability.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.h3c.ptability.enums.ElectronicSignRecordStatus;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.List;

/**
 * 员工签署明细电子文件记录实体类
 *
 * @author chenyifan
 * @since 2022-05-20 11:31:05
 */
@Data
@Accessors(chain = true)
@TableName(value = "pt_esign_record", autoResultMap = true)
public class PtEsignRecord {

    public static final String ALL_ORG_SIGN = "orgSign";

    /**
     * 入职电子签场景
     */
    public static final Integer ON_BOARDING_SCENE_TYPE = 1;
    /**
     * 人才协议电子签场景
     */
    public static final Integer TALENT_SCENE_TYPE = 2;
    /**
     * 员工手册签署场景
     */
    public static final Integer EMPLOYEE_HANDBOOK_TYPE = 3;
    /**
     * 合同续签签署场景
     */
    public static final Integer RENEW_TYPE = 4;
    /**
     * 培训服务协议签署场景
     */
    public static final Integer TRAINING_SERVICE_AGREEMENT_TYPE = 5;
    /**
     * 实习协议  (前)
     */
    public static final Integer INTERNSHIP_BEFORE_AGREEMENT_TYPE = 6;
    /**
     * 实习协议  (后)
     */
    public static final Integer INTERNSHIP_AFTER_AGREEMENT_TYPE = 7;
    /**
     * 校园猎头协议
     */
    public static final Integer CAMPUS_HEADHUNTING_TYPE = 8;

    /**
     * 签署记录ID
     */
    @TableId
    private String recordId;
    /**
     * 员工工号
     */
    private String workerId;
    /**
     * 员工姓名
     */
    private String workerName;
    /**
     * 签署场景类型
     */
    private Integer sceneType;
    /**
     * 签署任务ID
     */
    private String taskId;
    /**
     * 签署任务发起人姓名/工号
     */
    private String creatorInfo;
    /**
     * 签署启动时间
     */
    private Date signBeginTime;
    /**
     * 签署状态 0用户签署中  1拒绝签署   2签署成功    3异常  4待公司签章
     */
    private ElectronicSignRecordStatus signStatus;
    /**
     * 签署完成时间
     */
    private Date signFinishTime;
    /**
     * 签署失败的原因
     */
    private String failReason;
    /**
     * 发起签章请求的应用来源（预留字段）
     */
    private String appId;
    /**
     * 个人签章签章系统的记录id
     */
    private String signFlowId;
    /**
     * 公司签章签章系统的记录id
     */
    private String orgFlowId;
    /**
     * 作废流程id
     */
    private String cancelFlowId;
    /**
     * 签署地址（用于重新发起签署）
     */
    private String signUrl;
    /**
     * 签署流程详情
     */
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<PtEsignSignProcessInfo> cancelProcessInfo;
    /**
     * 签署流程详情
     */
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<PtEsignSignProcessInfo> signProcessInfo;
    /**
     * 发起作废时间
     */
    private Date startCancelTime;
    /**
     * 完成作废时间
     */
    private Date finishCancelTime;

    @TableField(exist = false)
    private Integer dept1id;
    @TableField(exist = false)
    private Integer dept2id;
    @TableField(exist = false)
    private Integer dept3id;
}

